/*
 * consola.c
 *
 *  Created on: 13/11/2011
 *      Author: Normandia
 */

#include "consola.h"

void iniciarConsola(const char* name, uint8_t cant_args, void (*fun_comando)(char*, char**)) {

	char comando[MAX_CHAR_CMD];
	char *cmd = NULL, **args = NULL, *aux=NULL;
	uint8_t i;

	printf("Ingrese un comando\n%s> ",name);

	while(1){
		// Obtengo entrada de comando del stdin
		fgets(comando,MAX_CHAR_CMD,stdin);

		comando[strlen(comando)-1] = '\0'; // elimino el \n del final de la cadena

		// Separo el comando
		aux = strtok(comando, " ");
		if(!aux) {
			printf("Error en el comando\n");
			continue;
		}
		cmd = aux;

		// Reservo para el array de argumentos
		args = (char**) calloc(cant_args, sizeof(char*));

		// Obtengo los argumentos
		i=0;
		aux = (char*)strtok(NULL, " ");
		while(i<cant_args && aux) {

			args[i] = aux;
			aux = (char*)strtok(NULL, " ");
			i++;
		}

		// Ejecuto el handler de comandos
		fun_comando(cmd, args);

		// Libero memoria
		free(args);

		printf("\n%s> ",name);
	}

}
